package org.example.projecttwo.entity.dto.content.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Map;

@Data
@Schema(description = "新闻详情视图对象，包含完整的新闻信息")
public class NewsDetailVO {

    @Schema(description = "新闻ID")
    private Long id;

    @Schema(description = "新闻编号")
    private String newsNo;

    @Schema(description = "新闻标题")
    private String title;

    @Schema(description = "新闻内容")
    private String content;

    @Schema(description = "封面图片URL")
    private String coverUrl;

    @Schema(description = "发布者头像URL")
    private String authorAvatar;

    @Schema(description = "新闻状态：0-草稿、1-待审核、2-审核通过、3-审核未通过、4-已下架、5-已删除")
    private Integer status;

    @Schema(description = "状态名称")
    private String statusName;

    @Schema(description = "作者ID")
    private Long authorId;

    @Schema(description = "作者名称")
    private String authorNickname;

    @Schema(description = "发布策略：1-立即发布，2-定时发布")
    private Integer publishStrategy;

    @Schema(description = "定时发布时间")
    private LocalDateTime customPublishTime;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "提交审核时间")
    private LocalDateTime submitAuditTime;

    @Schema(description = "审核结束时间")
    private LocalDateTime auditEndTime;

    @Schema(description = "审核人ID")
    private Long auditorId;

    @Schema(description = "审核人名称")
    private String auditorName;

    @Schema(description = "审核意见")
    private String auditOpinion;

    @Schema(description = "下架原因：1-内容违规，2-内容过时，3-作者申请，4-其他原因")
    private Integer offShelfReason;

    @Schema(description = "下架原因名称")
    private String offShelfReasonName;

    @Schema(description = "下架时间")
    private LocalDateTime offShelfTime;

    @Schema(description = "删除原因：1-内容违规，2-重复发布，3-作者申请，4-其他原因")
    private Integer deleteReason;

    @Schema(description = "删除原因名称")
    private String deleteReasonName;

    @Schema(description = "删除时间")
    private LocalDateTime deleteTime;

    @Schema(description = "删除备注")
    private String deleteRemark;

    @Schema(description = "统计数据：浏览量、点赞数、收藏数等")
    private Map<String, Integer> statistics;

    @Schema(description = "审核不通过原因")
    private String rejectReason;

    @Schema(description = "实际发布时间")
    private LocalDateTime publishTime;

    @Schema(description = "作者名称")
    private String authorName;

    @Schema(description = "审核时间")
    private LocalDateTime auditTime;
}